/*
 * SonarQube
 * Copyright (C) 2009-2023 SonarSource SA
 * mailto:info AT sonarsource DOT com
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
import { ExtendedSettingDefinition, SettingType } from '../../types/settings';

export const definitions: ExtendedSettingDefinition[] = [
  {
    key: 'sonar.abap.file.suffixes',
    name: 'File suffixes',
    description: 'List of suffixes for files to analyze. To not filter, leave the list empty.',
    category: 'ABAP',
    subCategory: 'General',
    defaultValue: '.abap,.ab4,.flow,.asprog',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.apex.file.suffixes',
    name: 'File Suffixes',
    description: 'List of suffixes for files to analyze.',
    category: 'Apex',
    subCategory: 'General',
    defaultValue: '.cls,.trigger',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.apex.coverage.reportPath',
    name: 'Path to coverage report',
    description:
      'Path to coverage report file (test-result-codecoverage.json) generated by Salesforce CLI test command for Apex. The path may be absolute or relative to the project base directory.',
    category: 'Apex',
    subCategory: 'Test and Coverage',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.gitlab.enabled',
    name: 'Enabled',
    description:
      'Enable Gitlab users to login. Value is ignored if URL, Application ID, and Secret are not set.',
    type: SettingType.BOOLEAN,
    category: 'authentication',
    subCategory: 'gitlab',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.saml.enabled',
    name: 'Enabled',
    description:
      'Enable SAML users to login. Value is ignored if provider ID, login url, certificate, login, name attributes are not defined.',
    type: SettingType.BOOLEAN,
    category: 'authentication',
    subCategory: 'saml',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.github.enabled',
    name: 'Enabled',
    description:
      'Enable GitHub users to login. Value is ignored if client ID and secret are not defined.',
    type: SettingType.BOOLEAN,
    category: 'authentication',
    subCategory: 'github',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.bitbucket.enabled',
    name: 'Enabled',
    description:
      'Enable Bitbucket users to login. Value is ignored if consumer key and secret are not defined.',
    type: SettingType.BOOLEAN,
    category: 'authentication',
    subCategory: 'bitbucket',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.saml.applicationId',
    name: 'Application ID',
    description: 'The identifier used on the Identity Provider for registering SonarQube.',
    category: 'authentication',
    subCategory: 'saml',
    defaultValue: 'sonarqube',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.github.clientId.secured',
    name: 'Client ID',
    description: 'Client ID provided by GitHub when registering the application.',
    category: 'authentication',
    subCategory: 'github',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.gitlab.url',
    name: 'GitLab URL',
    description: 'URL to access GitLab.',
    category: 'authentication',
    subCategory: 'gitlab',
    defaultValue: 'https://gitlab.com',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.bitbucket.clientId.secured',
    name: 'OAuth consumer key',
    description: 'Consumer key provided by Bitbucket when registering the consumer.',
    category: 'authentication',
    subCategory: 'bitbucket',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.gitlab.applicationId.secured',
    name: 'Application ID',
    description: 'Application ID provided by GitLab when registering the application.',
    category: 'authentication',
    subCategory: 'gitlab',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.github.clientSecret.secured',
    name: 'Client Secret',
    description: 'Client password provided by GitHub when registering the application.',
    type: SettingType.PASSWORD,
    category: 'authentication',
    subCategory: 'github',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.bitbucket.clientSecret.secured',
    name: 'OAuth consumer secret',
    description: 'Consumer secret provided by Bitbucket when registering the consumer.',
    category: 'authentication',
    subCategory: 'bitbucket',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.saml.providerName',
    name: 'Provider Name',
    description:
      'Name of the Identity Provider displayed in the login page when SAML authentication is active.',
    category: 'authentication',
    subCategory: 'saml',
    defaultValue: 'SAML',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.bitbucket.allowUsersToSignUp',
    name: 'Allow users to sign-up',
    description:
      "Allow new users to authenticate. When set to 'false', only existing users will be able to authenticate.",
    type: SettingType.BOOLEAN,
    category: 'authentication',
    subCategory: 'bitbucket',
    defaultValue: 'true',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.github.allowUsersToSignUp',
    name: 'Allow users to sign-up',
    description:
      "Allow new users to authenticate. When set to 'false', only existing users will be able to authenticate to the server.",
    type: SettingType.BOOLEAN,
    category: 'authentication',
    subCategory: 'github',
    defaultValue: 'true',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.saml.providerId',
    name: 'Provider ID',
    description:
      'Identifier of the Identity Provider, the entity that provides SAML authentication.',
    category: 'authentication',
    subCategory: 'saml',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.gitlab.secret.secured',
    name: 'Secret',
    description: 'Secret provided by GitLab when registering the application.',
    type: SettingType.PASSWORD,
    category: 'authentication',
    subCategory: 'gitlab',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.gitlab.allowUsersToSignUp',
    name: 'Allow users to sign-up',
    description:
      "Allow new users to authenticate. When set to 'false', only existing users will be able to authenticate to the server.",
    type: SettingType.BOOLEAN,
    category: 'authentication',
    subCategory: 'gitlab',
    defaultValue: 'true',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.saml.loginUrl',
    name: 'SAML login url',
    description: 'The URL where the Identity Provider expects to receive SAML requests.',
    category: 'authentication',
    subCategory: 'saml',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.bitbucket.workspaces',
    name: 'Workspaces',
    description:
      'Only members of at least one of these workspace will be able to authenticate. Keep empty to disable workspace restriction. You can use either the workspace name, or the workspace slug (ex: https://bitbucket.org/{workspace-slug}).',
    category: 'authentication',
    subCategory: 'bitbucket',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.saml.certificate.secured',
    name: 'Identity provider certificate',
    description:
      'The public X.509 certificate used by the Identity Provider to authenticate SAML messages.',
    type: SettingType.PASSWORD,
    category: 'authentication',
    subCategory: 'saml',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.github.groupsSync',
    name: 'Synchronize teams as groups',
    description:
      "For each team they belong to, the user will be associated to a group named 'Organization/Team' (if it exists) in SonarQube.",
    type: SettingType.BOOLEAN,
    category: 'authentication',
    subCategory: 'github',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.gitlab.groupsSync',
    name: 'Synchronize user groups',
    description:
      'For each GitLab group they belong to, the user will be associated to a group with the same name (if it exists) in SonarQube. If enabled, the GitLab Oauth2 application will need to provide the api scope.',
    type: SettingType.BOOLEAN,
    category: 'authentication',
    subCategory: 'gitlab',
    defaultValue: 'false',
    options: [],
    fields: [],
    deprecatedKey: 'sonar.auth.gitlab.sync_user_groups',
  },
  {
    key: 'sonar.auth.saml.user.login',
    name: 'SAML user login attribute',
    description:
      'The name of the attribute where the SAML Identity Provider will put the login of the authenticated user.',
    category: 'authentication',
    subCategory: 'saml',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.github.apiUrl',
    name: 'The API url for a GitHub instance.',
    description:
      'The API url for a GitHub instance. https://api.github.com/ for Github.com, https://github.company.com/api/v3/ when using Github Enterprise',
    category: 'authentication',
    subCategory: 'github',
    defaultValue: 'https://api.github.com/',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.saml.user.name',
    name: 'SAML user name attribute',
    description:
      'The name of the attribute where the SAML Identity Provider will put the name of the authenticated user.',
    category: 'authentication',
    subCategory: 'saml',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.github.webUrl',
    name: 'The WEB url for a GitHub instance.',
    description:
      'The WEB url for a GitHub instance. https://github.com/ for Github.com, https://github.company.com/ when using GitHub Enterprise.',
    category: 'authentication',
    subCategory: 'github',
    defaultValue: 'https://github.com/',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.github.organizations',
    name: 'Organizations',
    description:
      'Only members of these organizations will be able to authenticate to the server. If a user is a member of any of the organizations listed they will be authenticated.',
    category: 'authentication',
    subCategory: 'github',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.saml.user.email',
    name: 'SAML user email attribute',
    description:
      'The name of the attribute where the SAML Identity Provider will put the email of the authenticated user.',
    category: 'authentication',
    subCategory: 'saml',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.saml.group.name',
    name: 'SAML group attribute',
    description:
      'Attribute defining the user groups in SAML. Users are associated to the default group only if no attribute is defined.',
    category: 'authentication',
    subCategory: 'saml',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.saml.signature.enabled',
    name: 'Sign requests',
    description:
      'Enables signature of SAML requests. It requires both service provider private key and certificate to be set.',
    type: SettingType.BOOLEAN,
    category: 'authentication',
    subCategory: 'saml',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.saml.sp.privateKey.secured',
    name: 'Service provider private key',
    description:
      'PKCS8 stored private key used for signing the requests and decrypting responses from the identity provider. ',
    type: SettingType.PASSWORD,
    category: 'authentication',
    subCategory: 'saml',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.saml.sp.certificate.secured',
    name: 'Service provider certificate',
    description: 'X.509 certificate for the service provider, used for signing the requests.',
    type: SettingType.PASSWORD,
    category: 'authentication',
    subCategory: 'saml',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cfamily.bullseye.reportPath',
    name: 'Bullseye XML report',
    description:
      'Path to the Bullseye XML Coverage Report. The path may be either absolute or relative to the project base directory.',
    category: 'C / C++ / Objective-C',
    subCategory: '  Coverage',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.c.file.suffixes',
    name: 'C file suffixes',
    description: 'List of suffixes of C files to analyze.',
    category: 'C / C++ / Objective-C',
    subCategory: '   C and C++',
    defaultValue: '.c,.h',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cpp.file.suffixes',
    name: 'C++ file suffixes',
    description: 'List of suffixes of C++ files to analyze.',
    category: 'C / C++ / Objective-C',
    subCategory: '   C and C++',
    defaultValue: '.cc,.cpp,.cxx,.c++,.hh,.hpp,.hxx,.h++,.ipp',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cfamily.cppunit.reportsPath',
    name: 'CppUnit reports',
    description:
      'Path to the directory containing the *.xml CppUnit report files. The path may be either absolute or relative to the project base directory.',
    category: 'C / C++ / Objective-C',
    subCategory: '  Tests',
    options: [],
    fields: [],
    deprecatedKey: 'sonar.cpp.cppunit.reportsPath',
  },
  {
    key: 'sonar.cfamily.gcov.reportsPath',
    name: 'Gcov reports',
    description:
      'Path to the directory containing the *.gcov Gcov report files. The path may be either absolute or relative to the project base directory.',
    category: 'C / C++ / Objective-C',
    subCategory: '  Coverage',
    options: [],
    fields: [],
    deprecatedKey: 'sonar.cpp.gcov.reportsPath',
  },
  {
    key: 'sonar.cfamily.ignoreHeaderComments',
    name: 'Ignore header comments',
    description:
      'If set to "true", the file headers (that are usually the same on each file: licensing information for example) are not considered as comments. Thus metrics such as "Comment lines" do not get incremented. If set to "false", those file headers are considered as comments and metrics such as "Comment lines" get incremented.',
    type: SettingType.BOOLEAN,
    category: 'C / C++ / Objective-C',
    subCategory: ' Miscellaneous',
    defaultValue: 'true',
    options: [],
    fields: [],
    deprecatedKey: 'sonar.cpp.ignoreHeaderComments',
  },
  {
    key: 'sonar.cfamily.llvm-cov.reportPath',
    name: 'llvm-cov report',
    description:
      'Path to the Coverage Report generated by "llvm-cov show". The path may be either absolute or relative to the project base directory.',
    category: 'C / C++ / Objective-C',
    subCategory: '  Coverage',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.objc.file.suffixes',
    name: 'Objective-C file suffixes',
    description: 'List of suffixes of Objective-C files to analyze.',
    category: 'C / C++ / Objective-C',
    subCategory: '   Objective-C',
    defaultValue: '.m',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cfamily.vscoveragexml.reportsPath',
    name: 'Visual Studio XML reports',
    description:
      'Pattern for search for Visual Studio Coverage XML reports. The pattern may be either absolute or relative to the project base directory. For example: "**/*.coveragexml" will find all "*.coveragexml" files in all sub-directories of current project.',
    category: 'C / C++ / Objective-C',
    subCategory: '  Coverage',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cs.analyzeGeneratedCode',
    name: 'Analyze generated code',
    description:
      'If set to "true", the files containing generated code are analyzed. If set to "false", the files containing generated code are ignored.',
    type: SettingType.BOOLEAN,
    category: 'C#',
    subCategory: 'C#',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cs.file.suffixes',
    name: 'File suffixes',
    description: 'List of suffixes for files to analyze.',
    category: 'C#',
    subCategory: 'C#',
    defaultValue: '.cs',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cs.ignoreHeaderComments',
    name: 'Ignore header comments',
    description:
      'If set to "true", the file headers (that are usually the same on each file: licensing information for example) are not considered as comments. Thus metrics such as "Comment lines" do not get incremented. If set to "false", those file headers are considered as comments and metrics such as "Comment lines" get incremented.',
    type: SettingType.BOOLEAN,
    category: 'C#',
    subCategory: 'C#',
    defaultValue: 'true',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cloudformation.activate',
    name: 'Activate CloudFormation analysis',
    description: 'Activate analysis of JSON and Yaml files recognized as CloudFormation files.',
    type: SettingType.BOOLEAN,
    category: 'CloudFormation',
    subCategory: 'General',
    defaultValue: 'true',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cloudformation.file.identifier',
    name: 'File Identifier',
    description:
      'Files without the identifier are excluded from the analysis. The identifier can be anywhere in the file.',
    category: 'CloudFormation',
    subCategory: 'General',
    defaultValue: 'AWSTemplateFormatVersion',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cobol.aucobol.preprocessor.directives.default',
    name: 'AcuCobol preprocessor default directives',
    description:
      'This property allows to set preprocessor directives used to compile every COBOL program. See the \'ACUCOBOL-GT Source Code Control directives\' section in the <a target="_blank" href="http://docs.sonarqube.org/display/PLUG/COBOL+Plugin+Advanced+Configuration">documentation of the plugin</a>.',
    category: 'COBOL',
    subCategory: 'Preprocessor',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cobol.adaprep.activation',
    name: 'ADAPREP preprocessor activation',
    description:
      'ADAPREP is a COBOL preprocessor which provides the programmer with the full ADABAS (See Software AG) capability. Activating this property is mandatory if the COBOL source code might contain some ADAPREP directives.',
    type: SettingType.BOOLEAN,
    category: 'COBOL',
    subCategory: 'Preprocessor',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cobol.copy.suffixes',
    name: 'Copy suffixes',
    description:
      "Comma-separated list of suffixes for copybook to analyze, ex: 'cpy, cbl'. To not filter, leave the list empty.",
    category: 'COBOL',
    subCategory: 'Preprocessor',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cobol.copy.directories',
    name: 'Copybook directories',
    description:
      'Comma-separated list of all directories containing some copybooks required to analyze the COBOL programs. Both relative and absolute paths can be used.',
    category: 'COBOL',
    subCategory: 'Preprocessor',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cobol.copy.exclusions',
    name: 'Copybooks to exclude',
    description:
      'Comma-separated list of copybooks exclusion patterns. If one copybook name matches one exclusion pattern, no violation will be reported on this copybook. The exclusion pattern must be a case-insensitive regular expression and should not include the copybook suffix.<p>For instance "one\\d*,TWO." will exclude violations reported on one23.cpy, ONE111.cpy, TWOX, and TWO2.cpy copybooks.</p>',
    category: 'COBOL',
    subCategory: 'Preprocessor',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cobol.byteBasedColumnCount',
    name: 'Count columns based on bytes',
    description:
      'This property should be set to true if source columns have to be counted based on bytes rather than characters. That may be useful for projects using double-byte character set.',
    type: SettingType.BOOLEAN,
    category: 'COBOL',
    subCategory: 'COBOL',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cobol.preprocessor.skipping.first.matching.characters',
    name: 'Custom skipping preprocessor first matching characters',
    description:
      "<p>To support a maximum number of legacy COBOL preprocessors, this property allows to define which lines of code should be considered as a preprocessing line and so should be ignored when analyzing the COBOL source code.</p><p>For example, if this property is set to '%', all lines starting with a '%' character, and whatever is the position of this first character in the line, won't be analyzed. If this property is set to '%?', all lines starting with a '%' or a '?' will be ignored.</p>",
    category: 'COBOL',
    subCategory: 'Preprocessor',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cobol.db2include.directories',
    name: 'DB2 Include directories',
    description:
      'Comma-separated list of all directories (either relative or absolute paths) containing some copybooks required to analyze the COBOL programs. This property is used when interpreting the DB2 INCLUDE preprocessing directive (EXEC SQL INCLUDE ... END-EXEC) to locate the copybook files. When this property is not set, the property "sonar.cobol.copy.directories" is used instead.',
    category: 'COBOL',
    subCategory: 'SQL/CICS',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cobol.dialect',
    name: 'Dialect',
    description: 'The COBOL dialect to be used for the analysis.',
    type: SettingType.SINGLE_SELECT_LIST,
    category: 'COBOL',
    subCategory: 'COBOL',
    defaultValue: 'ibm-enterprise-cobol',
    options: [
      'bull-gcos-cobol',
      'hp-tandem-cobol',
      'ibm-os/vs-cobol',
      'ibm-ile-cobol',
      'ibm-cobol/ii',
      'ibm-cobol/400',
      'ibm-enterprise-cobol',
      'microfocus-cobol',
      'microfocus-acucobol-gt-cobol',
      'opencobol/cobol-it',
    ],
    fields: [],
  },
  {
    key: 'sonar.cobol.exec.recoveryMode',
    name: 'Exec SQL/CICS Recovery mode',
    description:
      'This option must be activated when the COBOL parser is unable to parse a specific SQL dialect like Pro*Cobol for instance.',
    type: SettingType.BOOLEAN,
    category: 'COBOL',
    subCategory: 'SQL/CICS',
    defaultValue: 'true',
    options: [],
    fields: [],
    deprecatedKey: 'sonar.cobol.sql.recoveryMode',
  },
  {
    key: 'sonar.cobol.file.suffixes',
    name: 'File suffixes',
    description:
      'Comma-separated list of suffixes for files to analyze. To not filter, leave the list empty.',
    category: 'COBOL',
    subCategory: 'COBOL',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cpd.cobol.ignoreLiteral',
    name: 'Ignore literals',
    description:
      "If true, CPD ignores literal value differences when evaluating a duplicated block. This means that 'my first text'; and 'my second text' will be seen as equivalent.",
    type: SettingType.BOOLEAN,
    category: 'COBOL',
    subCategory: 'Duplications',
    defaultValue: 'true',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cobol.compilationConstants',
    name: 'Microfocus Compilation Constants',
    description:
      'If your code takes advantage of conditional compilation features provided by Microfocus, you may have to configure compiler constants for your analysis.',
    type: SettingType.PROPERTY_SET,
    category: 'COBOL',
    subCategory: 'Preprocessor',
    multiValues: true,
    options: [],
    fields: [
      {
        key: 'name',
        name: 'Compilation Constant Name',
        options: [],
      },
      {
        key: 'value',
        name: 'Compilation Constant Value',
        options: [],
      },
    ],
  },
  {
    key: 'sonar.cobol.sql.catalog.defaultSchema',
    name: 'Names of default database schemas',
    description:
      'Comma-separated list of default database schemas used in embedded SQL statements. If a table name matches more than one, the table will be resolved to the first matching schema.',
    category: 'COBOL',
    subCategory: 'SQL/CICS',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cobol.sql.catalog.csv.path',
    name: 'Path for database catalog CSV files',
    description: 'Path of the directory containing CSV files for the database catalog.',
    category: 'COBOL',
    subCategory: 'SQL/CICS',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cobol.sourceFormat',
    name: 'Source format',
    description:
      'In fixed format, there is both a left and right margin; the indicator area is expected in column 7 and the code area ends in column 72. In variable format, there is only a left margin; the indicator area is expected in column 7. In free format, there is no margin; the indicator area is expected in column 1.',
    type: SettingType.SINGLE_SELECT_LIST,
    category: 'COBOL',
    subCategory: 'COBOL',
    defaultValue: 'fixed',
    options: ['fixed', 'variable', 'free'],
    fields: [],
  },
  {
    key: 'sonar.cobol.tab.width',
    name: 'Tab width',
    description:
      'Number of expanded spaces for a tab character (\'\t\'). This property really matters when the Source format is "fixed".',
    type: SettingType.INTEGER,
    category: 'COBOL',
    subCategory: 'COBOL',
    defaultValue: '8',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.css.file.suffixes',
    name: 'File Suffixes',
    description: 'List of suffixes for files to analyze.',
    category: 'CSS',
    subCategory: 'General',
    defaultValue: '.css,.less,.scss',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.docker.activate',
    name: 'Activate Docker Analysis',
    description:
      'Disabling Docker analysis ensures that no Docker files are parsed, highlighted and analyzed, and no IaC analysis results are included in the quality gate.',
    type: SettingType.BOOLEAN,
    category: 'Docker',
    subCategory: 'General',
    defaultValue: 'true',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.global.exclusions',
    name: 'Global Source File Exclusions',
    category: 'exclusions',
    subCategory: 'files',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.exclusions',
    name: 'Source File Exclusions',
    category: 'exclusions',
    subCategory: 'files',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.global.test.exclusions',
    name: 'Global Test File Exclusions',
    category: 'exclusions',
    subCategory: 'files',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.issue.ignore.allfile',
    name: 'Ignore Issues on Files',
    description:
      'Patterns to ignore all issues on files that contain a block of code matching a given regular expression.',
    type: SettingType.PROPERTY_SET,
    category: 'exclusions',
    subCategory: 'issues',
    options: [],
    fields: [
      {
        key: 'fileRegexp',
        name: 'Regular Expression',
        description:
          'If this regular expression is found in a file, then the whole file is ignored.',
        options: [],
      },
    ],
  },
  {
    key: 'sonar.inclusions',
    name: 'Source File Inclusions',
    category: 'exclusions',
    subCategory: 'files',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.issue.ignore.block',
    name: 'Ignore Issues in Blocks',
    description:
      'Patterns to ignore all issues on specific blocks of code, while continuing to scan and mark issues on the remainder of the file.',
    type: SettingType.PROPERTY_SET,
    category: 'exclusions',
    subCategory: 'issues',
    options: [],
    fields: [
      {
        key: 'beginBlockRegexp',
        name: 'Regular Expression for Start of Block',
        description:
          'If this regular expression is found in a file, then following lines are ignored until end of block.',
        options: [],
      },
      {
        key: 'endBlockRegexp',
        name: 'Regular Expression for End of Block',
        description:
          'If specified, this regular expression is used to determine the end of code blocks to ignore. If not, then block ends at the end of file.',
        options: [],
      },
    ],
  },
  {
    key: 'sonar.test.exclusions',
    name: 'Test File Exclusions',
    category: 'exclusions',
    subCategory: 'files',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.issue.ignore.multicriteria',
    name: 'Ignore Issues on Multiple Criteria',
    description:
      'Patterns to ignore issues on certain components and for certain coding rules.<br/>A rule key pattern consists of the rule repository name, followed by a colon, followed by a rule key or rule name fragment. For example:<ul><li>java:S1195</li><li>java:*Naming*</li></ul>',
    type: SettingType.PROPERTY_SET,
    category: 'exclusions',
    subCategory: 'issues',
    options: [],
    fields: [
      {
        key: 'ruleKey',
        name: 'Rule Key Pattern',
        description: 'Pattern to match rules which should be ignored.',
        options: [],
      },
      {
        key: 'resourceKey',
        name: 'File Path Pattern',
        description: 'Pattern to match files which should be ignored.',
        options: [],
      },
    ],
  },
  {
    key: 'sonar.test.inclusions',
    name: 'Test File Inclusions',
    category: 'exclusions',
    subCategory: 'files',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.issue.enforce.multicriteria',
    name: 'Restrict Scope of Coding Rules',
    description:
      'Patterns to restrict the application of a rule to only certain components, ignoring all others.<br/>A rule key pattern consists of the rule repository name, followed by a colon, followed by a rule key or rule name fragment. For example:<ul><li>java:S1195</li><li>java:*Naming*</li></ul>',
    type: SettingType.PROPERTY_SET,
    category: 'exclusions',
    subCategory: 'issues',
    options: [],
    fields: [
      {
        key: 'ruleKey',
        name: 'Rule Key Pattern',
        description: 'Pattern used to match rules which should be restricted.',
        options: [],
      },
      {
        key: 'resourceKey',
        name: 'File Path Pattern',
        description: 'Pattern used to match files to which the rules should be restricted.',
        options: [],
      },
    ],
  },
  {
    key: 'sonar.coverage.exclusions',
    category: 'exclusions',
    subCategory: 'coverage',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cpd.exclusions',
    name: 'Duplication Exclusions',
    description:
      'Patterns used to exclude some source files from the duplication detection mechanism. See below to know how to use wildcards to specify this property.',
    category: 'exclusions',
    subCategory: 'duplications',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.vbnet.roslyn.ignoreIssues',
    name: 'Ignore issues from external Roslyn analyzers',
    description:
      "If set to 'true', issues reported by external Roslyn analyzers won't be imported.",
    type: SettingType.BOOLEAN,
    category: 'External Analyzers',
    subCategory: 'VB.NET',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cs.roslyn.ignoreIssues',
    name: 'Ignore issues from external Roslyn analyzers',
    description:
      "If set to 'true', issues reported by external Roslyn analyzers won't be imported.",
    type: SettingType.BOOLEAN,
    category: 'External Analyzers',
    subCategory: 'C#',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.vbnet.roslyn.bugCategories',
    name: 'Rule categories associated with Bugs',
    description: 'External rule categories to be treated as Bugs.',
    category: 'External Analyzers',
    subCategory: 'VB.NET',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cs.roslyn.bugCategories',
    name: 'Rule categories associated with Bugs',
    description: 'External rule categories to be treated as Bugs.',
    category: 'External Analyzers',
    subCategory: 'C#',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cs.roslyn.vulnerabilityCategories',
    name: 'Rule categories associated with Vulnerabilities',
    description: 'External rule categories to be treated as Vulnerabilities.',
    category: 'External Analyzers',
    subCategory: 'C#',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.vbnet.roslyn.vulnerabilityCategories',
    name: 'Rule categories associated with Vulnerabilities',
    description: 'External rule categories to be treated as Vulnerabilities.',
    category: 'External Analyzers',
    subCategory: 'VB.NET',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cs.roslyn.codeSmellCategories',
    name: 'Rule categories associated with Code Smells',
    description:
      'External rule categories to be treated as Code Smells. By default, external issues are Code Smells, or Bugs when the severity is error.',
    category: 'External Analyzers',
    subCategory: 'C#',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.vbnet.roslyn.codeSmellCategories',
    name: 'Rule categories associated with Code Smells',
    description:
      'External rule categories to be treated as Code Smells. By default, external issues are Code Smells, or Bugs when the severity is error.',
    category: 'External Analyzers',
    subCategory: 'VB.NET',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cloudformation.cfn-lint.reportPaths',
    name: 'Cfn-Lint Report Files',
    description: 'Paths (absolute or relative) to the files with Cfn-Lint issues.',
    category: 'External Analyzers',
    subCategory: 'CloudFormation',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.androidLint.reportPaths',
    name: 'Android Lint Report Files',
    description: 'Paths (absolute or relative) to xml files with Android Lint issues.',
    category: 'External Analyzers',
    subCategory: 'Android',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.python.bandit.reportPaths',
    name: 'Bandit Report Files',
    description: 'Paths (absolute or relative) to json files with Bandit issues.',
    category: 'External Analyzers',
    subCategory: 'Python',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.java.checkstyle.reportPaths',
    name: 'Checkstyle Report Files',
    description: 'Paths (absolute or relative) to xml files with Checkstyle issues.',
    category: 'External Analyzers',
    subCategory: 'Java',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.kotlin.detekt.reportPaths',
    name: 'Detekt Report Files',
    description: 'Paths (absolute or relative) to checkstyle xml files with Detekt issues.',
    category: 'External Analyzers',
    subCategory: 'Kotlin',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.eslint.reportPaths',
    name: 'ESLint Report Files',
    description: 'Paths (absolute or relative) to the JSON files with ESLint issues.',
    category: 'External Analyzers',
    subCategory: 'JavaScript/TypeScript',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.python.flake8.reportPaths',
    name: 'Flake8 Report Files',
    description: 'Paths (absolute or relative) to report files with Flake8 issues.',
    category: 'External Analyzers',
    subCategory: 'Python',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.kotlin.ktlint.reportPaths',
    name: 'Ktlint Report Files',
    description: 'Paths (absolute or relative) to checkstyle xml or json files with Ktlint issues.',
    category: 'External Analyzers',
    subCategory: 'Kotlin',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.php.phpstan.reportPaths',
    name: 'PHPStan Report Files',
    description: 'Paths (absolute or relative) to report files with PHPStan issues.',
    category: 'External Analyzers',
    subCategory: 'PHP',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.apex.pmd.reportPaths',
    name: 'PMD Report Files',
    description: 'Paths (absolute or relative) to xml files with PMD issues.',
    category: 'External Analyzers',
    subCategory: 'Apex',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.java.pmd.reportPaths',
    name: 'PMD Report Files',
    description: 'Paths (absolute or relative) to xml files with PMD issues.',
    category: 'External Analyzers',
    subCategory: 'Java',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.php.psalm.reportPaths',
    name: 'Psalm Report Files',
    description: 'Paths (absolute or relative) to report files with Psalm issues.',
    category: 'External Analyzers',
    subCategory: 'PHP',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.python.pylint.reportPaths',
    name: 'Pylint Report Files',
    description: 'Paths (absolute or relative) to report files with Pylint issues.',
    category: 'External Analyzers',
    subCategory: 'Python',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.ruby.rubocop.reportPaths',
    name: 'RuboCop Report Files',
    description: 'Paths (absolute or relative) to json files with RuboCop issues.',
    category: 'External Analyzers',
    subCategory: 'Ruby',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.scala.scalastyle.reportPaths',
    name: 'Scalastyle Report Files',
    description: 'Paths (absolute or relative) to scalastyle xml files with Scalastyle issues.',
    category: 'External Analyzers',
    subCategory: 'Scala',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.scala.scapegoat.reportPaths',
    name: 'Scapegoat Report Files',
    description:
      'Paths (absolute or relative) to scapegoat xml files using scalastyle format. For example: scapegoat-scalastyle.xml',
    category: 'External Analyzers',
    subCategory: 'Scala',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.java.spotbugs.reportPaths',
    name: 'SpotBugs Report Files',
    description: 'Paths (absolute or relative) to xml files with SpotBugs issues.',
    category: 'External Analyzers',
    subCategory: 'Java',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.css.stylelint.reportPaths',
    name: 'Stylelint Report Files',
    description: 'Paths (absolute or relative) to the JSON files with stylelint issues.',
    category: 'External Analyzers',
    subCategory: 'CSS',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.swift.swiftLint.reportPaths',
    name: 'SwiftLint Report Files',
    description: 'Paths (absolute or relative) to the JSON files with SwiftLint issues.',
    category: 'External Analyzers',
    subCategory: 'Swift',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.typescript.tslint.reportPaths',
    name: 'TSLint Report Files',
    description: 'Paths (absolute or relative) to the JSON files with TSLint issues.',
    category: 'External Analyzers',
    subCategory: 'JavaScript/TypeScript',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.flex.cobertura.reportPaths',
    name: 'Cobertura xml report paths',
    description:
      'Comma separated list of paths to the Cobertura coverage report file. The paths may be either absolute or relative to the project base directory.',
    category: 'Flex',
    subCategory: 'Flex',
    multiValues: true,
    options: [],
    fields: [],
    deprecatedKey: 'sonar.flex.cobertura.reportPath',
  },
  {
    key: 'sonar.flex.file.suffixes',
    name: 'File suffixes',
    description: 'List of suffixes for files to analyze. To not filter, leave the list empty.',
    category: 'Flex',
    subCategory: 'Flex',
    defaultValue: 'as',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'email.smtp_host.secured',
    name: 'SMTP host',
    description: 'For example "smtp.gmail.com". Leave blank to disable email sending.',
    category: 'general',
    subCategory: 'email',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.login.message',
    name: 'Log-in Message',
    description:
      'If "Display log-in message" is set to True, the log-in message will be visible to anyone who can access the log-in page of this SonarQube instance.',
    type: SettingType.FORMATTED_TEXT,
    category: 'general',
    subCategory: 'Log-in message',
    options: [],
    fields: [],
  },
  {
    key: 'email.smtp_port.secured',
    name: 'SMTP port',
    description: 'Port number to connect with SMTP server.',
    type: SettingType.INTEGER,
    category: 'general',
    subCategory: 'email',
    defaultValue: '25',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.login.displayMessage',
    name: 'Display log-in Message',
    description:
      'Display the log-in message on the log-in page of this SonarQube instance. <br><br>Note: If the log-in message is empty. It will not appear even if this parameter is set to True',
    type: SettingType.BOOLEAN,
    category: 'general',
    subCategory: 'Log-in message',
    options: [],
    fields: [],
  },
  {
    key: 'email.smtp_secure_connection.secured',
    name: 'Secure connection',
    description: 'Type of secure connection. Leave empty to not use secure connection.',
    type: SettingType.SINGLE_SELECT_LIST,
    category: 'general',
    subCategory: 'email',
    options: ['ssl', 'starttls'],
    fields: [],
  },
  {
    key: 'email.smtp_username.secured',
    name: 'SMTP username',
    description: 'Username to use with authenticated SMTP.',
    category: 'general',
    subCategory: 'email',
    options: [],
    fields: [],
  },
  {
    key: 'email.smtp_password.secured',
    name: 'SMTP password',
    description: 'Password to use with authenticated SMTP.',
    type: SettingType.PASSWORD,
    category: 'general',
    subCategory: 'email',
    options: [],
    fields: [],
  },
  {
    key: 'email.from',
    name: 'From address',
    description:
      'Emails will come from this address. For example - "noreply@sonarsource.com". Note that the mail server may ignore this setting.',
    category: 'general',
    subCategory: 'email',
    defaultValue: 'noreply@nowhere',
    options: [],
    fields: [],
  },
  {
    key: 'email.fromName',
    name: 'From name',
    description:
      'Emails will come from this address name. For example - "SonarQube". Note that the mail server may ignore this setting.',
    category: 'general',
    subCategory: 'email',
    defaultValue: 'SonarQube',
    options: [],
    fields: [],
  },
  {
    key: 'email.prefix',
    name: 'Email prefix',
    description: 'Prefix will be prepended to all outgoing email subjects.',
    category: 'general',
    subCategory: 'email',
    defaultValue: '[SONARQUBE]',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.announcement.message',
    name: 'Announcement message',
    description:
      'If "Display announcement message" is set to True, this message will be displayed in a warning banner to anyone who can access SonarQube. If this field is empty, no message will be displayed, even if "Display announcement message" is set to True.',
    type: SettingType.TEXT,
    category: 'general',
    subCategory: 'announcement',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.builtInQualityProfiles.disableNotificationOnUpdate',
    name: 'Avoid quality profiles notification',
    description:
      'Avoid sending email notification on each update of built-in quality profiles to quality profile administrators.',
    type: SettingType.BOOLEAN,
    category: 'general',
    subCategory: 'general',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.cpd.cross_project',
    name: 'Cross project duplication detection',
    description:
      'DEPRECATED - By default, SonarQube detects duplications at project level. This means that a block duplicated on two different projects won\'t be reported. Setting this parameter to "true" allows to detect duplicates across projects. Note that activating this property will significantly increase each SonarQube analysis time, and therefore badly impact the performances of report processing as more and more projects are getting involved in this cross project duplication mechanism.',
    type: SettingType.BOOLEAN,
    category: 'general',
    subCategory: 'duplications',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.issues.defaultAssigneeLogin',
    name: 'Default Assignee',
    description:
      'New issues will be assigned to this user each time it is not possible to determine the user who is the author of the issue.',
    type: SettingType.USER_LOGIN,
    category: 'general',
    subCategory: 'issues',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.projectCreation.mainBranchName',
    name: 'Default main branch name',
    description:
      'Each project has a main branch at creation. This setting defines the instance-wide default main branch name.  A user can override this when creating a project. This setting does not apply to projects imported from a DevOps platform.',
    category: 'general',
    subCategory: 'subProjectCreation',
    defaultValue: 'main',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.developerAggregatedInfo.disabled',
    name: 'Disable developer aggregated information',
    description: "Don't show issue facets aggregating information per developer",
    type: SettingType.BOOLEAN,
    category: 'general',
    subCategory: 'issues',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.announcement.displayMessage',
    name: 'Display announcement message',
    description:
      'If set to True, the "Announcement message" will be displayed in a warning banner to anyone who can access SonarQube.',
    type: SettingType.BOOLEAN,
    category: 'general',
    subCategory: 'announcement',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.ce.parallelProjectTasks',
    name: 'Enable running project analysis tasks in parallel',
    description:
      'When enabled, this feature will allow the Compute Engine to process pull request analysis tasks in parallel with other pull request or branch analysis tasks of the same project.',
    type: SettingType.BOOLEAN,
    category: 'general',
    subCategory: 'Compute Engine',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.lf.enableGravatar',
    name: 'Enable support of gravatars',
    description: 'Gravatars are profile pictures of users based on their email.',
    type: SettingType.BOOLEAN,
    category: 'general',
    subCategory: 'looknfeel',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.lf.gravatarServerUrl',
    name: 'Gravatar URL',
    description:
      'Optional URL of custom Gravatar service. Accepted variables are {EMAIL_MD5} for MD5 hash of email and {SIZE} for the picture size in pixels.',
    category: 'general',
    subCategory: 'looknfeel',
    defaultValue: 'https://secure.gravatar.com/avatar/{EMAIL_MD5}.jpg?s={SIZE}&d=identicon',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.qualitygate.ignoreSmallChanges',
    name: 'Ignore duplication and coverage on small changes',
    description:
      'Quality Gate conditions about duplications in new code and coverage on new code are ignored until the number of new lines is at least 20.',
    type: SettingType.BOOLEAN,
    category: 'general',
    subCategory: 'qualityGate',
    defaultValue: 'true',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.lf.logoUrl',
    name: 'Logo URL',
    description: 'URL to logo image. Any standard format is accepted.',
    category: 'general',
    subCategory: 'looknfeel',
    options: [],
    fields: [],
    deprecatedKey: 'sonar.branding.image',
  },
  {
    key: 'sonar.core.serverBaseURL',
    name: 'Server base URL',
    description:
      'HTTP(S) URL of this SonarQube server, such as <i>https://yourhost.yourdomain/sonar</i>. This value is used outside SonarQube itself, e.g. for PR decoration, emails, etc.',
    category: 'general',
    subCategory: 'general',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.lf.logoWidthPx',
    name: 'Width of image in pixels',
    description: 'Width in pixels, given that the height of the the image is constrained to 30px.',
    category: 'general',
    subCategory: 'looknfeel',
    options: [],
    fields: [],
    deprecatedKey: 'sonar.branding.image.width',
  },
  {
    key: 'sonar.go.file.suffixes',
    name: 'File Suffixes',
    description: 'List of suffixes for files to analyze.',
    category: 'Go',
    subCategory: 'General',
    defaultValue: '.go',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.go.exclusions',
    name: 'Go Exclusions',
    description: 'List of file path patterns to be excluded from analysis of Go files.',
    category: 'Go',
    subCategory: 'General',
    defaultValue: '**/vendor/**',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.go.tests.reportPaths',
    name: 'Path to test execution report(s)',
    description:
      "Path to test execution reports generated by Go with '-json' key, available since go1.10 (e.g.: go test -json > test-report.out).",
    category: 'Go',
    subCategory: 'Test and Coverage',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.go.coverage.reportPaths',
    name: 'Path to coverage report(s)',
    description:
      'Path to coverage reports generated by Go (e.g.: go test -coverprofile=coverage.out), ant patterns relative to project root are supported.',
    category: 'Go',
    subCategory: 'Test and Coverage',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.go.govet.reportPaths',
    name: '"go vet" Report Files',
    description: 'Paths (absolute or relative) to the files with "go vet" issues.',
    category: 'Go',
    subCategory: 'Popular Rule Engines',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.go.golint.reportPaths',
    name: 'Golint Report Files',
    description: 'Paths (absolute or relative) to the files with Golint issues.',
    category: 'Go',
    subCategory: 'Popular Rule Engines',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.go.gometalinter.reportPaths',
    name: 'GoMetaLinter Report Files',
    description: 'Paths (absolute or relative) to the files with GoMetaLinter issues.',
    category: 'Go',
    subCategory: 'Popular Rule Engines',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.go.golangci-lint.reportPaths',
    name: 'GolangCI-Lint Report Files',
    description: 'Paths (absolute or relative) to the files with GolangCI-Lint issues.',
    category: 'Go',
    subCategory: 'Popular Rule Engines',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.governance.report.project.branch.frequency',
    name: 'PDF Reports Frequency',
    description:
      'Define the frequency at which to send PDF reports.<ul><li>"Daily" => report is sent on a daily basis</li><li>"Weekly" => report is sent on a weekly basis</li><li>"Monthly" => report is sent on a monthly basis</li></ul>',
    type: SettingType.SINGLE_SELECT_LIST,
    category: 'Governance',
    subCategory: 'Project and Application PDF Reports',
    defaultValue: 'Monthly',
    options: ['Daily', 'Weekly', 'Monthly'],
    fields: [],
  },
  {
    key: 'sonar.portfolios.recompute.hours',
    name: 'Portfolio Calculation Hours',
    description:
      'Hours of the day at which outdated portfolios will be recalculated. Portfolios will be queued at the beginning of each selected hour. A 24-hour clock is used, so valid values are 0–23. If this value is empty or invalid, each portfolio will be recalculated immediately after it becomes outdated.',
    type: SettingType.INTEGER,
    category: 'Governance',
    subCategory: 'Recalculation',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.governance.report.view.frequency',
    name: 'Portfolio Reports Frequency',
    description:
      'Define the default frequency that will be used to send PDF reports for portfolios.<ul><li>"Daily" => report is sent during the first portfolio calculation of the day (if any)</li><li>"Weekly" => report is sent during the first portfolio calculation of the week (if any), starting from Midnight on Monday</li><li>"Monthly" => report is sent during the first portfolio calculation of the month (if any), starting from the first day of the current month</li></ul>',
    type: SettingType.SINGLE_SELECT_LIST,
    category: 'Governance',
    subCategory: 'Portfolio PDF Reports',
    defaultValue: 'Monthly',
    options: ['Daily', 'Weekly', 'Monthly'],
    fields: [],
  },
  {
    key: 'sonar.governance.report.view.recipients',
    name: 'Recipients',
    description:
      'Email addresses of people who will automatically receive a PDF report for every portfolio defined in the system, based on the given frequency.',
    category: 'Governance',
    subCategory: 'Portfolio PDF Reports',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.dbcleaner.hoursBeforeKeepingOnlyOneSnapshotByDay',
    name: 'Keep only one analysis a day after',
    description:
      'After this number of hours, if there are several analyses during the same day, the DbCleaner keeps the most recent one and fully deletes the other ones.',
    type: SettingType.INTEGER,
    category: 'housekeeping',
    subCategory: 'general',
    defaultValue: '24',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.dbcleaner.daysBeforeDeletingInactiveBranchesAndPRs',
    name: 'Number of days before purging inactive branches and pull requests',
    description:
      'Branches and pull requests are permanently deleted when there has been no analysis for the configured number of days.',
    type: SettingType.INTEGER,
    category: 'housekeeping',
    subCategory: 'branchesAndPullRequests',
    defaultValue: '30',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.dbcleaner.branchesToKeepWhenInactive',
    name: 'Branches to keep when inactive',
    description:
      'By default, branches and pull requests are automatically deleted when inactive. This setting allows you to protect branches (but not pull requests) from this deletion. When a branch is created with a name that matches any of the regular expressions on the list of values of this setting, the branch will not be deleted automatically even when it becomes inactive.<br>Example:<ul><li>develop</li><li>release-.*</li></ul>',
    type: SettingType.REGULAR_EXPRESSION,
    category: 'housekeeping',
    subCategory: 'branchesAndPullRequests',
    defaultValue: 'main,master,develop,trunk',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.dbcleaner.weeksBeforeKeepingOnlyOneSnapshotByWeek',
    name: 'Keep only one analysis a week after',
    description:
      'After this number of weeks, if there are several analyses during the same week, the DbCleaner keeps the most recent one and fully deletes the other ones',
    type: SettingType.INTEGER,
    category: 'housekeeping',
    subCategory: 'general',
    defaultValue: '4',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.dbcleaner.weeksBeforeKeepingOnlyOneSnapshotByMonth',
    name: 'Keep only one analysis a month after',
    description:
      'After this number of weeks, if there are several analyses during the same month, the DbCleaner keeps the most recent one and fully deletes the other ones.',
    type: SettingType.INTEGER,
    category: 'housekeeping',
    subCategory: 'general',
    defaultValue: '52',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.dbcleaner.weeksBeforeKeepingOnlyAnalysesWithVersion',
    name: 'Keep only analyses with a version event after',
    description:
      'After this number of weeks, the DbCleaner keeps only analyses with a version event associated.',
    type: SettingType.INTEGER,
    category: 'housekeeping',
    subCategory: 'general',
    defaultValue: '104',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.dbcleaner.weeksBeforeDeletingAllSnapshots',
    name: 'Delete all analyses after',
    description: 'After this number of weeks, all analyses are fully deleted.',
    type: SettingType.INTEGER,
    category: 'housekeeping',
    subCategory: 'general',
    defaultValue: '260',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.dbcleaner.daysBeforeDeletingClosedIssues',
    name: 'Delete closed issues after',
    description: 'Issues that have been closed for more than this number of days will be deleted.',
    type: SettingType.INTEGER,
    category: 'housekeeping',
    subCategory: 'general',
    defaultValue: '30',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.dbcleaner.auditHousekeeping',
    name: 'Audit Logs Housekeeping Frequency',
    description:
      'Define the frequency that will be used to delete security-related audit logs.<br>Setting your housekeeping policy to keep your audit logs for a long period of time (for example, only deleting logs yearly) can increase your database size and the amount of time it takes to download audit logs.<ul><li>"Weekly" => Audit logs older than a week will be deleted</li><li>"Monthly" => Audit logs older than a month will be deleted</li><li>"Trimestrial" => AAudit logs older than 3 months will be deleted</li><li>"Yearly" => Audit logs older than a year will be deleted</li></ul>',
    type: SettingType.SINGLE_SELECT_LIST,
    category: 'housekeeping',
    subCategory: 'auditLogs',
    defaultValue: 'Monthly',
    options: ['Weekly', 'Monthly', 'Trimestrial', 'Yearly'],
    fields: [],
  },
  {
    key: 'sonar.html.file.suffixes',
    name: 'HTML File suffixes',
    description: 'List of file suffixes that will be scanned.',
    category: 'HTML',
    subCategory: 'HTML',
    defaultValue: '.html,.xhtml,.cshtml,.vbhtml,.aspx,.ascx,.rhtml,.erb,.shtm,.shtml,.cmp,.twig',
    multiValues: true,
    options: [],
    fields: [],
    deprecatedKey: 'sonar.web.file.suffixes',
  },
  {
    key: 'sonar.jsp.file.suffixes',
    name: 'JSP File suffixes',
    description: 'List of JSP file suffixes that will be scanned.',
    category: 'HTML',
    subCategory: 'HTML',
    defaultValue: '.jsp,.jspf,.jspx',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.coverage.jacoco.xmlReportPaths',
    description:
      'Paths to JaCoCo XML coverage report files. Each path can be either absolute or relative to the project base directory. Wildcard patterns are accepted (*, ** and ?).',
    category: 'JaCoCo',
    subCategory: 'JaCoCo',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.java.file.suffixes',
    name: 'File suffixes',
    description: 'List of suffixes for Java files to analyze. To not filter, leave the list empty.',
    category: 'java',
    subCategory: 'General',
    defaultValue: '.java,.jav',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.junit.reportPaths',
    name: 'JUnit Report Paths',
    description:
      'Comma-separated paths to the various directories containing the *.xml JUnit report files. Each path may be absolute or relative to the project base directory.',
    category: 'java',
    subCategory: 'JUnit',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.javascript.globals',
    name: 'Global variables',
    description: 'List of global variables.',
    category: 'JavaScript / TypeScript',
    subCategory: 'General',
    defaultValue: 'angular,goog,google,OenLayers,d3,dojo,dojox,dijit,Backbone,moment,casper,_,sap',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.javascript.ignoreHeaderComments',
    name: 'Ignore header comments',
    description: 'True to not count file header comments in comment metrics.',
    type: SettingType.BOOLEAN,
    category: 'JavaScript / TypeScript',
    subCategory: 'General',
    defaultValue: 'true',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.javascript.environments',
    name: 'JavaScript execution environments',
    description:
      'List of environments names. The analyzer automatically adds global variables based on that list. Available environment names: amd, applescript, atomtest, browser, commonjs, couch, embertest, flow, greasemonkey, jasmine, jest, jquery, meteor, mocha, mongo, nashorn, node, phantomjs, prototypejs, protractor, qunit, rhino, serviceworker, shared-node-browser, shelljs, webextensions, worker, wsh, yui.',
    category: 'JavaScript / TypeScript',
    subCategory: 'General',
    defaultValue:
      'amd,applescript,atomtest,browser,commonjs,couch,embertest,flow,greasemonkey,jasmine,jest,jquery,meteor,mocha,mongo,nashorn,node,phantomjs,prototypejs,protractor,qunit,rhino,serviceworker,shared-node-browser,shelljs,webextensions,worker,wsh,yui',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.javascript.file.suffixes',
    name: 'JavaScript File Suffixes',
    description: 'List of suffixes for files to analyze.',
    category: 'JavaScript / TypeScript',
    subCategory: 'General',
    defaultValue: '.js,.jsx,.cjs,.mjs,.vue',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.javascript.lcov.reportPaths',
    name: 'LCOV Files',
    description: 'Paths (absolute or relative) to the files with LCOV data.',
    category: 'JavaScript / TypeScript',
    subCategory: 'Tests and Coverage',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.javascript.maxFileSize',
    name: 'Maximum size of analyzed files',
    description:
      'Threshold for the maximum size of analyzed files (in kilobytes). Files that are larger are excluded from the analysis.',
    type: SettingType.INTEGER,
    category: 'JavaScript / TypeScript',
    subCategory: 'General',
    defaultValue: '1000',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.typescript.file.suffixes',
    name: 'TypeScript File Suffixes',
    description: 'List of suffixes for files to analyze.',
    category: 'JavaScript / TypeScript',
    subCategory: 'General',
    defaultValue: '.ts,.tsx,.cts,.mts',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.typescript.tsconfigPaths',
    name: 'TypeScript tsconfig.json location',
    description: 'Comma-delimited list of paths to TSConfig files. Wildcards are supported.',
    category: 'JavaScript / TypeScript',
    subCategory: 'TypeScript',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.json.file.suffixes',
    name: 'File Suffixes',
    description: 'List of suffixes of JSON files to be indexed.',
    category: SettingType.JSON,
    subCategory: 'General',
    defaultValue: '.json',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.kotlin.file.suffixes',
    name: 'File Suffixes',
    description: 'List of suffixes for files to analyze.',
    category: 'Kotlin',
    subCategory: 'General',
    defaultValue: '.kt',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.kubernetes.activate',
    name: 'Activate Kubernetes analysis',
    description: 'Activate analysis of JSON and Yaml files recognized as Kubernetes files.',
    type: SettingType.BOOLEAN,
    category: 'Kubernetes',
    subCategory: 'General',
    defaultValue: 'true',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.php.coverage.reportPaths',
    name: 'Coverage Reports',
    description:
      'List of PHPUnit code coverage report files. Each path can be either absolute or relative.',
    category: 'PHP',
    subCategory: 'PHPUnit',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.php.file.suffixes',
    name: 'File Suffixes',
    description: 'List of suffixes of PHP files to analyze.',
    category: 'PHP',
    subCategory: 'General',
    defaultValue: 'php,php3,php4,php5,phtml,inc',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.php.exclusions',
    name: 'PHP Exclusions',
    description: 'List of file path patterns to be excluded from analysis of PHP files.',
    category: 'PHP',
    subCategory: 'General',
    defaultValue: '**/vendor/**',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.php.tests.reportPath',
    name: 'Unit Test Report',
    description:
      'Path to the PHPUnit unit test execution report file. The path may be either absolute or relative to the project base directory.',
    category: 'PHP',
    subCategory: 'PHPUnit',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.pli.extralingualCharacters',
    name: 'Extralingual characters',
    description:
      'Extralingual characters which should be considered as valid in identifiers. No separator should be used. Example: #@$£§',
    category: 'PL/I',
    subCategory: 'PL/I',
    defaultValue: '#@$',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.pli.file.suffixes',
    name: 'File suffixes',
    description:
      'List of suffixes for PL/I files to analyze. To not change the defaults, leave the list empty.',
    category: 'PL/I',
    subCategory: 'PL/I',
    defaultValue: '.pli',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.pli.ignoreHeaderComments',
    name: 'Ignore header comments',
    description: "Set to 'true' to enable, or 'false' to disable.",
    type: SettingType.BOOLEAN,
    category: 'PL/I',
    subCategory: 'PL/I',
    defaultValue: 'true',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.pli.marginLeft',
    name: 'Margin left',
    description:
      "The column number of the source's leftmost character, must be greater or equal to 1.",
    type: SettingType.INTEGER,
    category: 'PL/I',
    subCategory: 'PL/I',
    defaultValue: '2',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.pli.marginRight',
    name: 'Margin right',
    description:
      "The column number of the source's rightmost character, must be greater or equal to the leftmost's one, or 0 to indicate an unlimited right margin.",
    type: SettingType.INTEGER,
    category: 'PL/I',
    subCategory: 'PL/I',
    defaultValue: '72',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.plsql.file.suffixes',
    name: 'File Suffixes',
    description: 'List of suffixes for files to analyze.',
    category: 'PL/SQL',
    subCategory: 'General',
    defaultValue: 'sql,pks,pkb',
    multiValues: true,
    options: [],
    fields: [],
    deprecatedKey: 'sonar.plsql.suffixes',
  },
  {
    key: 'sonar.plsql.ignoreHeaderComments',
    name: 'Ignore Header Comments',
    description:
      'If set to "true", the file headers (that are usually the same on each file: licensing information for example) are not considered as comments. Thus metrics such as "Comment lines" do not get incremented. If set to "false", those file headers are considered as comments and metrics such as "Comment lines" get incremented.',
    type: SettingType.BOOLEAN,
    category: 'PL/SQL',
    subCategory: 'General',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.python.file.suffixes',
    name: 'File Suffixes',
    description: 'List of suffixes of Python files to analyze.',
    category: 'Python',
    subCategory: 'General',
    defaultValue: 'py',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.python.coverage.reportPaths',
    name: 'Path to coverage report(s)',
    description:
      'List of paths pointing to coverage reports. Ant patterns are accepted for relative path. The reports have to conform to the Cobertura XML format.',
    category: 'Python',
    subCategory: 'Tests and Coverage',
    defaultValue: 'coverage-reports/*coverage-*.xml',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.python.coverage.reportPath',
    name: 'Path to coverage report',
    description:
      'DEPRECATED : Use sonar.python.coverage.reportPaths instead. Path to a coverage report. Ant patterns are accepted for relative path. The report has to conform to the Cobertura XML format.',
    category: 'Python',
    subCategory: 'Tests and Coverage',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.python.xunit.skipDetails',
    name: 'Skip the details when importing the Xunit reports',
    description:
      'When enabled the test execution statistics is provided only on project level. Use this mode when paths in report are not found. Disabled by default.',
    type: SettingType.BOOLEAN,
    category: 'Python',
    subCategory: 'Tests and Coverage',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.python.xunit.reportPath',
    name: 'Path to xunit report(s)',
    description:
      "Path to the report of test execution, relative to project's root. Ant patterns are accepted. The reports have to conform to the junitreport XML format.",
    category: 'Python',
    subCategory: 'Tests and Coverage',
    defaultValue: 'xunit-reports/xunit-result-*.xml',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.rpg.suffixes',
    name: 'File Suffixes',
    description: 'List of suffixes of RPG files to analyze.',
    category: 'RPG',
    subCategory: 'RPG',
    defaultValue: '.rpg,.rpgle,.sqlrpgle,.RPG,.RPGLE,.SQLRPGLE',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.rpg.leftMarginWidth',
    name: 'Left margin width',
    description:
      'Number of characters to the left of the standard 5-character comment block. In an RPG "source physical file" this will typically be 12, but it may not be present in your files depending on your extraction process.',
    type: SettingType.INTEGER,
    category: 'RPG',
    subCategory: 'RPG',
    defaultValue: '12',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.ruby.file.suffixes',
    name: 'File Suffixes',
    description: 'List of suffixes for files to analyze.',
    category: 'Ruby',
    subCategory: 'General',
    defaultValue: '.rb',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.ruby.coverage.reportPaths',
    name: 'Path to coverage report(s)',
    description:
      'Path to coverage report files (.resultset.json) generated by SimpleCov. The path may be absolute or relative to the project base directory.',
    category: 'Ruby',
    subCategory: 'Test and Coverage',
    defaultValue: 'coverage/.resultset.json',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.ruby.exclusions',
    name: 'Ruby Exclusions',
    description: 'List of file path patterns to be excluded from analysis of Ruby files.',
    category: 'Ruby',
    subCategory: 'General',
    defaultValue: '**/vendor/**',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.security.config.roslyn.sonaranalyzer.security.cs',
    name: 'C# custom configuration',
    description:
      "Custom configuration of the C# SAST engine. Details on the expected JSON format can be found on the 'Security Engine Custom Configuration' documentation page.",
    type: SettingType.JSON,
    category: 'SAST Engine',
    subCategory: 'Configuration',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.security.config.javasecurity',
    name: 'Java custom configuration',
    description:
      "Custom configuration of the Java SAST engine. Details on the expected JSON format can be found on the 'Security Engine Custom Configuration' documentation page.",
    type: SettingType.JSON,
    category: 'SAST Engine',
    subCategory: 'Configuration',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.security.config.phpsecurity',
    name: 'PHP custom configuration',
    description:
      "Custom configuration of the PHP SAST engine. Details on the expected JSON format can be found on the 'Security Engine Custom Configuration' documentation page.",
    type: SettingType.JSON,
    category: 'SAST Engine',
    subCategory: 'Configuration',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.security.config.pythonsecurity',
    name: 'Python custom configuration',
    description:
      "Custom configuration of the Python SAST engine. Details on the expected JSON format can be found on the 'Security Engine Custom Configuration' documentation page.",
    type: SettingType.JSON,
    category: 'SAST Engine',
    subCategory: 'Configuration',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.scala.file.suffixes',
    name: 'File Suffixes',
    description: 'List of suffixes for files to analyze.',
    category: 'Scala',
    subCategory: 'General',
    defaultValue: '.scala',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.scala.coverage.reportPaths',
    name: 'Path to Scoverage report',
    description:
      'Path to Scoverage report file(s) (scoverage.xml). Usually in target\\scala-X.X\\scoverage-report',
    category: 'Scala',
    subCategory: 'Test and Coverage',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.scm.disabled',
    name: 'Disable the SCM Sensor',
    description: 'Disable the retrieval of blame information from Source Control Manager',
    type: SettingType.BOOLEAN,
    category: 'scm',
    subCategory: 'scm',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.text.excluded.file.suffixes',
    name: 'Additional binary file suffixes',
    description:
      'Additional list of binary file suffixes that should not be analyzed with rules targeting text files.',
    category: 'Secrets',
    subCategory: 'General',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.auth.token.max.allowed.lifetime',
    name: 'Maximum allowed lifetime for token',
    description:
      'Define the maximum lifetime that can be used for new tokens. Existing tokens are not impacted and may need to be manually revoked.',
    type: SettingType.SINGLE_SELECT_LIST,
    category: 'security',
    subCategory: 'security',
    defaultValue: 'No expiration',
    options: ['30 days', '90 days', '1 year', 'No expiration'],
    fields: [],
  },
  {
    key: 'sonar.validateWebhooks',
    name: 'Enable local webhooks validation',
    description:
      'Forcing local webhooks validation prevents the creation and triggering of local webhooks<br><strong>Disabling this setting can expose the instance to security risks.</strong>',
    type: SettingType.BOOLEAN,
    category: 'security',
    subCategory: 'security',
    defaultValue: 'true',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.allowPermissionManagementForProjectAdmins',
    name: 'Enable permission management for project administrators',
    description:
      "Set if users with 'Administer' role in a project should be allowed to change project permissions. By default users with 'Administer' role are allowed to change both project configuration and project permissions.",
    type: SettingType.BOOLEAN,
    category: 'security',
    subCategory: 'security',
    defaultValue: 'true',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.forceAuthentication',
    name: 'Force user authentication',
    description:
      'Forcing user authentication prevents anonymous users from accessing the SonarQube UI, or project data via the Web API. Some specific read-only Web APIs, including those required to prompt authentication, are still available anonymously.<br><strong>Disabling this setting can expose the instance to security risks.</strong>',
    type: SettingType.BOOLEAN,
    category: 'security',
    subCategory: 'security',
    defaultValue: 'true',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.swift.coverage.reportPath',
    name: 'Code coverage report',
    description:
      'DEPRECATED: Path of the coverage report generated from "llvm-cov show". This path can be either absolute or relative to the project directory.',
    category: 'Swift',
    subCategory: 'Swift',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.swift.coverage.reportPaths',
    name: 'Code coverage reports',
    description:
      'Paths to the coverage reports generated from "llvm-cov show". These paths can be either absolute or relative to the project directory.',
    category: 'Swift',
    subCategory: 'Swift',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.swift.file.suffixes',
    name: 'File Suffixes',
    description: 'List of suffixes for files to analyze.',
    category: 'Swift',
    subCategory: 'Swift',
    defaultValue: '.swift',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.tsql.file.suffixes',
    name: 'File Suffixes',
    description: 'List of suffixes for files to analyze.',
    category: 'T-SQL',
    subCategory: 'General',
    defaultValue: '.tsql',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.technicalDebt.developmentCost',
    name: 'Development cost',
    description:
      'Cost to develop one line of code (LOC). Example: if the cost to develop 1 LOC has been estimated at 30 minutes, then the value of this property would be 30.',
    category: 'technicalDebt',
    subCategory: 'technicalDebt',
    defaultValue: '30',
    options: [],
    fields: [],
    deprecatedKey: 'workUnitsBySizePoint',
  },
  {
    key: 'languageSpecificParameters',
    name: 'Language specific parameters',
    description:
      'DEPRECATED - The parameters specified here for a given language will override the general parameters defined in this section.',
    type: SettingType.PROPERTY_SET,
    category: 'technicalDebt',
    subCategory: 'technicalDebt',
    options: [],
    fields: [
      {
        key: 'language',
        name: 'Language Key',
        description: 'Ex: java, cs, cpp...',
        options: [],
      },
      {
        key: 'man_days',
        name: 'Development cost',
        description: 'If left blank, the generic value defined in this section will be used.',
        type: SettingType.FLOAT,
        options: [],
      },
    ],
    deprecatedKey: 'languageSpecificParameters',
  },
  {
    key: 'sonar.technicalDebt.ratingGrid',
    name: 'Maintainability rating grid',
    description:
      'Maintainability ratings range from A (very good) to E (very bad). The rating is determined by the value of the Technical Debt Ratio, which compares the technical debt on a project to the cost it would take to rewrite the code from scratch. The default values for A through D are 0.05,0.1,0.2,0.5. Anything over 0.5 is an E. Example: assuming the development cost is 30 minutes, a project with a technical debt of 24,000 minutes for 2,500 LOC will have a technical debt ratio of 24000/(30 * 2,500) = 0.32. That yields a maintainability rating of D.',
    category: 'technicalDebt',
    subCategory: 'technicalDebt',
    defaultValue: '0.05,0.1,0.2,0.5',
    options: [],
    fields: [],
    deprecatedKey: 'ratingGrid',
  },
  {
    key: 'sonar.terraform.activate',
    name: 'Activate Terraform Analysis',
    description:
      'Disabling Terraform analysis ensures that no Terraform files are parsed, highlighted and analyzed, and no IaC analysis results are included in the quality gate.',
    type: SettingType.BOOLEAN,
    category: 'Terraform',
    subCategory: 'General',
    defaultValue: 'true',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.terraform.file.suffixes',
    name: 'File Suffixes',
    description: 'List of suffixes of Terraform files to analyze.',
    category: 'Terraform',
    subCategory: 'General',
    defaultValue: '.tf',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.terraform.provider.aws.version',
    name: 'AWS Provider Version',
    description:
      'Version of the AWS provider of lifecycle management of AWS resources. Use semantic versioning format like `3.4`, `4.17.1` or `4`',
    category: 'Terraform',
    subCategory: 'Provider Versions',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.terraform.provider.azure.version',
    name: 'Azure Provider Version',
    description:
      'Version of the Azure Resource Manager provider of lifecycle management of Microsoft Azure resources. Use semantic versioning format like `3.4`, `4.17.1` or `4`',
    category: 'Terraform',
    subCategory: 'Provider Versions',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.vbnet.analyzeGeneratedCode',
    name: 'Analyze generated code',
    description:
      'If set to "true", the files containing generated code are analyzed. If set to "false", the files containing generated code are ignored.',
    type: SettingType.BOOLEAN,
    category: 'VB.NET',
    subCategory: 'VB.NET',
    defaultValue: 'false',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.vbnet.file.suffixes',
    name: 'File suffixes',
    description: 'List of suffixes for files to analyze.',
    category: 'VB.NET',
    subCategory: 'VB.NET',
    defaultValue: '.vb',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.vbnet.ignoreHeaderComments',
    name: 'Ignore header comments',
    description:
      'If set to "true", the file headers (that are usually the same on each file: licensing information for example) are not considered as comments. Thus metrics such as "Comment lines" do not get incremented. If set to "false", those file headers are considered as comments and metrics such as "Comment lines" get incremented.',
    type: SettingType.BOOLEAN,
    category: 'VB.NET',
    subCategory: 'VB.NET',
    defaultValue: 'true',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.vb.file.suffixes',
    name: 'File Suffixes',
    description:
      'List of suffixes for Visual Basic files to analyze. To not change the defaults, leave the list empty.',
    category: 'Visual Basic',
    subCategory: 'Visual Basic',
    defaultValue: '.bas,.frm,.cls,.ctl,.BAS,.FRM,.CLS,.CTL',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.vb.ignoreHeaderComments',
    name: 'Ignore header comments',
    description: "Set to 'true' to enable, or 'false' to disable.",
    type: SettingType.BOOLEAN,
    category: 'Visual Basic',
    subCategory: 'Visual Basic',
    defaultValue: 'true',
    options: [],
    fields: [],
  },
  {
    key: 'sonar.xml.file.suffixes',
    name: 'File suffixes',
    description: 'List of suffixes for XML files to analyze.',
    category: 'XML',
    subCategory: 'XML',
    defaultValue: '.xml,.xsd,.xsl',
    multiValues: true,
    options: [],
    fields: [],
  },
  {
    key: 'sonar.yaml.file.suffixes',
    name: 'File Suffixes',
    description: 'List of suffixes of YAML files to be indexed.',
    category: 'YAML',
    subCategory: 'General',
    defaultValue: '.yaml,.yml',
    multiValues: true,
    options: [],
    fields: [],
  },
];
